﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CoreProvince;
using CoreNhaDat;
using System.IO;
using CoreBDS;

namespace BatDongSan.Modules
{
    public partial class Uc_DangTin : System.Web.UI.UserControl
    {
        static int _id;
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (Request.Cookies["DiaOcDaNang"] != null)
                {
                    if (Request.Cookies["DiaOcDaNang"]["IdMember"] != null && Request.Cookies["DiaOcDaNang"]["IdMember"].ToString() != "")
                    {
                        _id = Convert.ToInt32(Request.QueryString["id"]);
                        if (!IsPostBack)
                        {
                            BindingNhaDat();
                            BindingDdlProvince();
                            BindingDdlWard(Convert.ToInt32(ddlProvince.SelectedValue));
                            BindingCaterogy(Convert.ToInt32(ddlNhaDat.SelectedValue));
                            if (_id > 0)
                            {
                                LoadDataToUpdate(_id);
                                btUpdate.Text = "Cập nhật";
                            }
                            else
                            {
                                LoadDataToUpdate(0);
                                btUpdate.Text = "Gửi";
                            }
                        }
                    }
                    else
                    {
                        Response.Redirect("/Login.aspx");
                    }
                }
                else
                {
                    Response.Redirect("/Login.aspx");
                }
                

            }
            catch { }
        }

        protected void LoadDataToUpdate(int id)
        {
            try
            {
                if (id > 0)
                {
                    nlit_Place o = PlaceBll.GetById(id, Utility.strConnect);
                    txtAddress.Text = o.Address;
                    txtArea.Text = o.Area.ToString();
                    txtDateBegin.Text = string.Format("{0:MM/dd/yyyy}", o.DateBegin);
                    txtDateEnd.Text = string.Format("{0:MM/dd/yyyy}", o.DateEnd);
                    txtDescrption.Text = o.Description;
                    txtEmail.Text = o.UserEmail;
                    txtHuongBanCong.Text = o.HuongBanCong;
                    txtHuongNha.Text = o.HuongNha;
                    txtLoiVao.Text = o.LoiVao;
                    txtMatTien.Text = o.MatTien;
                    txtName.Text = o.Name;
                    txtNoithat.Text = o.NoiThat;
                    txtPhone.Text = o.UserPhone;
                    if (o.Price == 0)
                        txtPrice.Text = "";
                    else
                        txtPrice.Text = o.Price.ToString();
                    txtSoPhong.Text = o.SoPhong.ToString();
                    txtSoTang.Text = o.SoTang.ToString();
                    txtSoTolet.Text = o.SoTolet.ToString();
                    txtTelephone.Text = o.UserTelephone;
                    txtUserAddress.Text = o.UserAddress;
                    txtUserName.Text = o.UserName;
                    //BindingNhaDat(Convert.ToInt32(LoaiNhaDatBll.GetById((int)o.CategoryId, Utility.strConnect).NhaDatId));
                    ddlNhaDat.SelectedValue = Convert.ToString(LoaiNhaDatBll.GetById((int)o.CategoryId, Utility.strConnect).NhaDatId);
                    BindingCaterogy(Convert.ToInt32(ddlNhaDat.SelectedValue));
                    ddlCaterogy.SelectedValue = Convert.ToString((int)o.CategoryId);
                    BindingDdlAreaUnit(o.AreaUnit);
                    BindingDdlNewsType((int)o.TypeNewsId);
                    BindingDdlPriceUnit(o.PriceUnit);
                    //BindingDdlProvince((int)o.ProvinceId);
                    ddlProvince.SelectedValue = Convert.ToString(o.ProvinceId);
                    BindingDdlWard((int)o.ProvinceId);
                    ddlWard.SelectedValue = Convert.ToString((int)o.WardId);
                    hdfImage.Value = o.Img;

                }
                else
                {

                    txtAddress.Text = "";
                    txtArea.Text = "";
                    txtDateBegin.Text = string.Format("{0:MM/dd/yyyy}", DateTime.Now);
                    txtDateEnd.Text = string.Format("{0:MM/dd/yyyy}", DateTime.Now);
                    txtDescrption.Text = "";
                    txtEmail.Text = "";
                    txtHuongBanCong.Text = "";
                    txtHuongNha.Text = "";
                    txtLoiVao.Text = "";
                    txtMatTien.Text = "";
                    txtName.Text = "";
                    txtNoithat.Text = "";
                    txtPhone.Text = "";
                    txtPrice.Text = "";
                    txtSoPhong.Text = "";
                    txtSoTang.Text = "";
                    txtSoTolet.Text = "";
                    txtTelephone.Text = "";
                    txtUserAddress.Text = "";
                    txtUserName.Text = "";
                    //BindingNhaDat(0);
                    //BindingCaterogy(0, Convert.ToInt32(ddlNhaDat.SelectedValue));
                    BindingDdlAreaUnit("0");
                    BindingDdlNewsType(0);
                    BindingDdlPriceUnit("0");
                    //BindingDdlProvince();
                    //BindingDdlWard(1, 0);
                    if (Request.Cookies["DiaOcDaNang"] != null)
                    {
                        if (Request.Cookies["DiaOcDaNang"]["IdMember"] != null && Request.Cookies["DiaOcDaNang"]["IdMember"].ToString() != "")
                        {
                            nlit_Member Mem = MemberBll.GetById(Convert.ToInt32(Request.Cookies["DiaOcDaNang"]["IdMember"].ToString()), Utility.strConnect);
                            string strProvince="";
                            try
                            {
                                strProvince = " - "+WardBll.GetById((int)Mem.WardId, Utility.strConnect).Name + " , " + ProvinceBll.GetById((int)Mem.ProvinceId, Utility.strConnect).Name;
                            }
                            catch{}
                            
                            txtUserAddress.Text = Mem.Address + strProvince;
                            txtUserName.Text = Mem.FullName;
                            txtPhone.Text = Mem.Mobiphone;
                            txtTelephone.Text = Mem.Telephone;
                            txtEmail.Text = Mem.Email;
                        }
                    }
                }
            }
            catch { }
        }

        protected void BindingNhaDat()
        {
            try
            {
                ddlNhaDat.DataSource = NhaDatBll.GetList(false, true, Utility.strConnect);
                ddlNhaDat.DataTextField = "Name";
                ddlNhaDat.DataValueField = "Id";
                ddlNhaDat.DataBind();
            }
            catch { }
        }
        protected void BindingCaterogy(int nhaDatId)
        {

            try
            {
                ddlCaterogy.Items.Clear();
                ddlCaterogy.DataSource = LoaiNhaDatBll.GetList(false, true, nhaDatId, Utility.strConnect);
                ddlCaterogy.DataTextField = "Name";
                ddlCaterogy.DataValueField = "Id";
                ddlCaterogy.DataBind();
            }
            catch { }
        }

        protected void BindingDdlNewsType(int id)
        {

            try
            {
                ddlTypeNews.Items.Clear();
                ListItem item = new ListItem();

                item.Text = "Tin thường";
                item.Value = "1";
                ddlTypeNews.Items.Add(item);
                if (Convert.ToInt32(item.Value) == id)
                    ddlTypeNews.SelectedIndex = 0;

                ListItem item1 = new ListItem();
                item1.Text = "Tin Vip";
                item1.Value = "2";
                ddlTypeNews.Items.Add(item1);
                if (Convert.ToInt32(item1.Value) == id)
                    ddlTypeNews.SelectedIndex = 1;

                ListItem item2 = new ListItem();
                item2.Text = "Tin Hot";
                item2.Value = "3";
                ddlTypeNews.Items.Add(item2);
                if (Convert.ToInt32(item2.Value) == id)
                    ddlTypeNews.SelectedIndex = 2;
            }
            catch { }
        }

        protected void BindingDdlProvince()
        {
            try
            {
                ddlProvince.DataSource = ProvinceBll.GetList(Utility.strConnect);
                ddlProvince.DataTextField = "Name";
                ddlProvince.DataValueField = "Id";
                ddlProvince.DataBind();

            }
            catch { }
        }

        protected void BindingDdlWard(int idProvince)
        {
            try
            {
                //ddlWard.Items.Clear();
                if (idProvince > 0)
                {
                    ddlWard.DataSource = WardBll.GetList(false, true, idProvince, Utility.strConnect);
                    ddlWard.DataTextField = "Name";
                    ddlWard.DataValueField = "Id";
                    ddlWard.DataBind();
                }
            }
            catch { }
        }

        protected void BindingDdlPriceUnit(string unit)
        {
            try
            {
                ddlPriceUnit.Items.Clear();
                ListItem item = new ListItem();

                item.Text = "tỷ";
                item.Value = "tỷ";
                ddlPriceUnit.Items.Add(item);
                if (item.Value.Equals(unit))
                    ddlPriceUnit.SelectedIndex = 0;
                ListItem item1 = new ListItem();
                item1.Text = "triệu";
                item1.Value = "triệu";
                ddlPriceUnit.Items.Add(item1);
                if (item1.Value.Equals(unit))
                    ddlPriceUnit.SelectedIndex = 1;
                ListItem item3 = new ListItem();
                item3.Text = "VNĐ";
                item3.Value = "VNĐ";
                ddlPriceUnit.Items.Add(item3);
                if (item3.Value.Equals(unit))
                    ddlPriceUnit.SelectedIndex = 2;
                ListItem item2 = new ListItem();
                item2.Text = "USD";
                item2.Value = "USD";
                ddlPriceUnit.Items.Add(item2);
                if (item2.Value.Equals(unit))
                    ddlPriceUnit.SelectedIndex = 3;
            }
            catch { }
        }

        protected void BindingDdlAreaUnit(string unit)
        {
            try
            {
                ddlAreaUnit.Items.Clear();
                ListItem item = new ListItem();

                item.Text = "m2";
                item.Value = "m2";
                ddlAreaUnit.Items.Add(item);
                if (item.Value.Equals(unit))
                    ddlAreaUnit.SelectedIndex = 0;

            }
            catch { }
        }

        protected void btUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(txtName.Text.Trim()))
                {
                    lbStatus.Text = "Bạn cần nhập tieu đề";
                    return;
                }
                DateTime dateBegin = Convert.ToDateTime(txtDateBegin.Text.Trim());
                DateTime dateEnd = Convert.ToDateTime((txtDateEnd.Text.Trim()));
                if (dateBegin.CompareTo(dateEnd) == 0)
                {
                    lbStatus.Text = "Ngày kết thúc phải lớn hơn ngày bắt đầu.";
                    return;
                }
                if (dateBegin.CompareTo(dateEnd) < 0)
                {
                    lbStatus.Text = "Ngày kết thúc phải lớn hơn ngày bắt đầu.";
                    return;
                }
                if (string.IsNullOrEmpty(txtDescrption.Text.Trim()))
                {
                    lbStatus.Text = "Bạn cần nhập nội dung mô tả";
                    return;
                }
                if (string.IsNullOrEmpty(txtAddress.Text.Trim()))
                {
                    lbStatus.Text = "Bạn cần nhập địa chỉ";
                    return;
                }
                if (string.IsNullOrEmpty(txtArea.Text.Trim()))
                {
                    lbStatus.Text = "Bạn cần nhập diên tích";
                    return;
                }
                else
                {
                    try
                    {
                        Convert.ToInt32(txtArea.Text.Trim());
                    }
                    catch
                    {
                        lbStatus.Text = "Bạn cần nhập diện tích là số";
                        return;
                    }
                }

                if (string.IsNullOrEmpty(txtPhone.Text.Trim()))
                {
                    lbStatus.Text = "Bạn cần nhập số di động";
                    return;
                }
                if (string.IsNullOrEmpty(txtUserName.Text.Trim()))
                {
                    lbStatus.Text = "Tên người bán không được để trống.";
                    return;
                }
                if (string.IsNullOrEmpty(txtUserAddress.Text.Trim()))
                {
                    lbStatus.Text = "Địa chỉ người bán không được để trống.";
                    return;
                }
                if (cvk.AppCode.WebUtility.CountChar(txtDescrption.Text.Trim()) < 50)
                {
                    lbStatus.Text = "Nội dung phải lớn hơn 50 chữ.";
                    return;
                }
                nlit_Place o = new nlit_Place();
                try
                {

                    o.Address = txtAddress.Text.Trim();
                    o.Area = Convert.ToInt32(txtArea.Text.Trim());
                    o.AreaUnit = ddlAreaUnit.SelectedValue;
                    o.CategoryId = Convert.ToInt32(ddlCaterogy.SelectedValue);
                    o.DateBegin = Convert.ToDateTime(txtDateBegin.Text.Trim());
                    o.DateCreate = DateTime.Now;
                    o.DateEnd = Convert.ToDateTime((txtDateEnd.Text.Trim()));
                    o.DateUpdate = DateTime.Now;
                    o.Description = txtDescrption.Text.Trim();
                    o.HuongBanCong = txtHuongBanCong.Text.Trim();
                    o.HuongNha = txtHuongNha.Text.Trim();
                    o.Id = _id;

                    o.ImgMap = "";
                    o.IsActive = false;
                    o.IsDeleted = false;
                    o.LoiVao = txtLoiVao.Text.Trim();
                    o.MatTien = txtMatTien.Text.Trim();
                    o.Name = txtName.Text.Trim();
                    o.NoiThat = txtNoithat.Text.Trim();
                    o.OrderDisplay = 0;
                    if (string.IsNullOrEmpty(txtPrice.Text.Trim()))
                        o.Price = 0;
                    else
                    {
                        try
                        {
                            o.Price = Convert.ToInt32(txtPrice.Text.Trim());
                            if (o.Price == 0)
                            {
                                lbStatus.Text = "Giá bán phải lớn hơn 0.";
                                return;
                            }
                        }
                        catch
                        {
                            o.Price = 0;
                        }
                    }
                    o.PriceUnit = ddlPriceUnit.SelectedValue;
                    o.ProjectId = 1;

                    #region Upload Image Thumb
                    string fileName1 = string.Empty;
                    string filePath1 = Server.MapPath(string.Format("~/Uploads/NhaDat/"));
                    try
                    {
                        if (!Directory.Exists(filePath1))
                        {
                            Directory.CreateDirectory(filePath1);
                        }
                        if (FileUpload1.HasFile)
                        {
                            if (cvk.AppCode.WebUtility.IsValidFile(FileUpload1.FileName, ".jpg", ".jpeg", ".gif", ".JPG", ".JPEG", ".GIF", ".bmp", ".Bmp", ".BMP") && FileUpload1.FileContent.Length <= 3145728) //3M
                            {
                                fileName1 = cvk.AppCode.WebUtility.GetDateTimeString(FileUpload1.FileName);
                                cvk.AppCode.WebUtility.UploadImage(FileUpload1, filePath1, fileName1, 150, 118);
                                //FileUpload1.SaveAs(filePath1 + fileName1);
                            }
                            else
                            {
                                lbStatus.Text = "Hình Upload không hợp lệ, vui lòng chọn hình ảnh khác.";
                                return;
                            }
                        }
                        else if (_id == 0)
                        {
                            lbStatus.Text = "Vui lòng chọn hình ảnh đại diện.";
                            return;
                        }
                        else fileName1 = hdfImage.Value;
                    }
                    catch
                    { }
                    o.Img = fileName1;
                    #endregion

                    o.ProvinceId = Convert.ToInt32(ddlProvince.SelectedValue);

                    if (string.IsNullOrEmpty(txtSoPhong.Text.Trim()))
                        o.SoPhong = 0;
                    else
                        o.SoPhong = Convert.ToInt32(txtSoPhong.Text.Trim());
                    if (string.IsNullOrEmpty(txtSoTang.Text.Trim()))
                        o.SoTang = 0;
                    else
                        o.SoTang = Convert.ToInt32(txtSoTang.Text.Trim());
                    if (string.IsNullOrEmpty(txtSoTolet.Text.Trim()))
                        o.SoTolet = 0;
                    else
                        o.SoTolet = Convert.ToInt32(txtSoTolet.Text.Trim());

                    o.TypeNewsId = Convert.ToInt32(ddlTypeNews.SelectedValue);
                    o.UserAddress = txtUserAddress.Text.Trim();
                    o.UserEmail = txtEmail.Text.Trim();
                    o.UserName = txtUserName.Text.Trim();
                    o.UserPhone = txtPhone.Text.Trim();
                    o.UserTelephone = txtTelephone.Text.Trim();
                    o.WardId = Convert.ToInt32(ddlWard.SelectedValue);
                }
                catch
                {
                    lbStatus.Text = "Có lỗi trong quá trình nhập dữ liệu. Vui lòng kiểm tra lại dữ liệu.";
                }

                if (_id > 0)
                {
                    o.Id = _id;
                    string email = MemberBll.GetById(Convert.ToInt32(Request.Cookies["DiaOcDaNang"]["IdMember"]), Utility.strConnect).Email;
                    if (email.Equals(o.UserEmail))
                    {
                        if (PlaceBll.Update(o, Utility.strConnect))
                        {

                            lbStatus.Text = "Cập nhật thông tin thành công";
                            LoadDataToUpdate(_id);

                        }
                        else
                        {
                            lbStatus.Text = "Cập nhật thông tin thất bại";
                        }
                            
                    }
                    else
                    {
                        lbStatus.Text = "Bạn không thể cập nhật tin này";
                        
                    }
                    

                }
                else
                {
                    if (PlaceBll.Insert(o, Utility.strConnect) > 0)
                    {
                        lbStatus.Text = "Đăng tin thành công";
                        LoadDataToUpdate(0);
                    }
                    else
                    {
                        lbStatus.Text = "Đăng tin thất bại";
                    }
                }
            }
            catch { }
        }

        protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e)
        {
            BindingDdlWard(Convert.ToInt32(ddlProvince.SelectedValue));
        }

        protected void ddlNhaDat_SelectedIndexChanged(object sender, EventArgs e)
        {
            BindingCaterogy(Convert.ToInt32(ddlNhaDat.SelectedValue));
        }
    }
}